package logica;

import personaje.Mario;

public class LogicaMarioGrande extends LogicaMario {
	/**
	 * Constructor LogicaMarioGrande
	 * @param Mario
	 */
	public LogicaMarioGrande(Mario m) {
		super(m);

	}

	@Override
	public boolean saltar(EntidadConLogica e) {
		if (!e.estaCayendo()) {

			boolean arriba, arribaIzq, arribaDer;

			arriba = puedeSaltar(e.getCasilleroActual().getX(), e
					.getCasilleroActual().getY() - 32, e);
			arribaIzq = puedeSaltar(e.getCasilleroActual().getX() - 8, e
					.getCasilleroActual().getY() - 32, e);
			arribaDer = puedeSaltar(e.getCasilleroActual().getX() + 8, e
					.getCasilleroActual().getY() - 32, e);

			return (arribaIzq && arriba && arribaDer);
		} else {

			return false;
		}
	}

	@Override
	public boolean cantSaltos() {
		return cantSaltos < 7;
	}

	@Override
	public boolean moverDerecha(EntidadConLogica e) {
		boolean c1 = super.moverDerecha(e);

		boolean derecha, derechaArriba;

		derecha = puedeMover(e.getCasilleroActual().getX() + 16, e
				.getCasilleroActual().getY() - 16, e);
		derechaArriba = puedeMover(e.getCasilleroActual().getX() + 16, e
				.getCasilleroActual().getY() - 24, e);

		boolean c2 = (derecha && derechaArriba);

		return (c1 && c2);

	}

	@Override
	public boolean moverIzquierda(EntidadConLogica e) {
		boolean c1 = super.moverIzquierda(e);

		boolean izquierda, izquierdaArriba;

		izquierda = puedeMover(e.getCasilleroActual().getX() - 16, e
				.getCasilleroActual().getY() - 16, e);
		izquierdaArriba = puedeMover(e.getCasilleroActual().getX() - 16, e
				.getCasilleroActual().getY() - 24, e);

		boolean c2 = (izquierda && izquierdaArriba);

		return (c1 && c2);
	}

}
